//
//  KeyboardViewController.h
//  CocoaSynth
//
//  Created by Thomas Dupont on 17/02/10.
//  Copyright 2010 Apple Inc. All rights reserved.
//

#import <Cocoa/Cocoa.h>

@class ModuleKeyboardViewController;
@class KeyboardButtonController;

/*!
 @class			KeyboardViewController
 @abstract		Controleur de la vue du keyboard.
 */
@interface KeyboardViewController : NSViewController {	
	ModuleKeyboardViewController* module;
	IBOutlet KeyboardButtonController* noteDO;
	IBOutlet KeyboardButtonController* noteDOd;
	IBOutlet KeyboardButtonController* noteRE;
	IBOutlet KeyboardButtonController* noteREd;
	IBOutlet KeyboardButtonController* noteMI;
	IBOutlet KeyboardButtonController* noteFA;
	IBOutlet KeyboardButtonController* noteFAd;
	IBOutlet KeyboardButtonController* noteSOL;
	IBOutlet KeyboardButtonController* noteSOLd;
	IBOutlet KeyboardButtonController* noteLA;
	IBOutlet KeyboardButtonController* noteLAd;
	IBOutlet KeyboardButtonController* noteSI;
}

/*!
 @abstract		Le controleur du module keyboard associ&eacute; au controleur du keyboard.
 @param			aModule le controleur de module keyboard associ&eacute; au controleur du keyboard.
 */
@property (assign) ModuleKeyboardViewController* module;

/*!
 @abstract		Le controleur du bouton associ&eacute; &agrave; la note DO.
 @param			aNote le controleur de bouton associ&eacute; &agrave; la note DO.
 */
@property (retain) KeyboardButtonController* noteDO;

/*!
 @abstract		Le controleur du bouton associ&eacute; &agrave; la note DO di&egrave;se.
 @param			aNote le controleur de bouton associ&eacute; &agrave; la note DO di&egrave;se.
 */
@property (retain) KeyboardButtonController* noteDOd;

/*!
 @abstract		Le controleur du bouton associ&eacute; &agrave; la note RE.
 @param			aNote le controleur de bouton associ&eacute; &agrave; la note RE.
 */
@property (retain) KeyboardButtonController* noteRE;

/*!
 @abstract		Le controleur du bouton associ&eacute; &agrave; la note RE di&egrave;se.
 @param			aNote le controleur de bouton associ&eacute; &agrave; la note RE di&egrave;se.
 */
@property (retain) KeyboardButtonController* noteREd;

/*!
 @abstract		Le controleur du bouton associ&eacute; &agrave; la note MI.
 @param			aNote le controleur de bouton associ&eacute; &agrave; la note MI.
 */
@property (retain) KeyboardButtonController* noteMI;

/*!
 @abstract		Le controleur du bouton associ&eacute; &agrave; la note FA.
 @param			aNote le controleur de bouton associ&eacute; &agrave; la note FA.
 */
@property (retain) KeyboardButtonController* noteFA;

/*!
 @abstract		Le controleur du bouton associ&eacute; &agrave; la note FA di&egrave;se.
 @param			aNote le controleur de bouton associ&eacute; &agrave; la note FA di&egrave;se.
 */
@property (retain) KeyboardButtonController* noteFAd;

/*!
 @abstract		Le controleur du bouton associ&eacute; &agrave; la note SOL.
 @param			aNote le controleur de bouton associ&eacute; &agrave; la note SOL.
 */
@property (retain) KeyboardButtonController* noteSOL;

/*!
 @abstract		Le controleur du bouton associ&eacute; &agrave; la note SOL di&egrave;se.
 @param			aNote le controleur de bouton associ&eacute; &agrave; la note SOL di&egrave;se.
 */
@property (retain) KeyboardButtonController* noteSOLd;

/*!
 @abstract		Le controleur du bouton associ&eacute; &agrave; la note LA.
 @param			aNote le controleur de bouton associ&eacute; &agrave; la note LA.
 */
@property (retain) KeyboardButtonController* noteLA;

/*!
 @abstract		Le controleur du bouton associ&eacute; &agrave; la note LA di&egrave;se.
 @param			aNote le controleur de bouton associ&eacute; &agrave; la note LA di&egrave;se.
 */
@property (retain) KeyboardButtonController* noteLAd;

/*!
 @abstract		Le controleur du bouton associ&eacute; &agrave; la note SI.
 @param			aNote le controleur de bouton associ&eacute; &agrave; la note SI.
 */
@property (retain) KeyboardButtonController* noteSI;

/*!
 @method		notePlayed:
 @abstract		M&eacute;thode permettant de jouer la fr&eacute;quence de la note pass&eacute;e en param&egrave;tre.
 @param			aNote la fr&eacutequence que l'on veut jouer.
 */
- (void)notePlayed:(float)theNote;

@end
